package com.ruoyi.contarct.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.contarctbill.domain.HouseContarctBill;
import com.ruoyi.customer.domain.CrmCustomer;
import com.ruoyi.house.domain.HouseInfo;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 合同对象 house_contarct
 * 
 * @author hct
 * @date 2022-02-16
 */
@Data
public class HouseContarct extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 序号 */
    private Long id;

    /** 合同编号 */
    @Excel(name = "合同编号")
    private String contarctCode;

    /** 租赁编号 */
    @Excel(name = "租赁编号")
    private String rentCode;

    /** 物业编号 */
    @Excel(name = "物业编号")
    private String propertyCode;

    /** 合同名称 */
    @Excel(name = "合同名称")
    private String contarctName;

    /** 客户id */
    @Excel(name = "客户id")
    private String companyId;

    /** 公司名称 */
    @Excel(name = "公司名称")
    private String companyName;

    /** 通讯地址 */
    @Excel(name = "通讯地址")
    private String contactAddress;

    /** 联系人名称 */
    @Excel(name = "联系人名称")
    private String contactName;

    /** 联系人电话 */
    @Excel(name = "联系人电话")
    private String contactMobile;

    /** 合同开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "合同开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date contractStartTime;

    /** 合同结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "合同结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date contractEndTime;


    /** 免租开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "免租开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date freeStarttime;

    /** 免租结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "免租结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date freeEndTime;

    /** 房间id集合 */
    @Excel(name = "房间id集合")
    private String roomids;

    /** 合同状态 */
    @Excel(name = "合同状态")
    private Integer status;

    /** 合同文件附件地址 */
    @Excel(name = "合同文件附件地址")
    private String contarctPath;



    /** 合同签约人 */
    @Excel(name = "合同签约人")
    private Long signBy;

    /** 签约时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "签约时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date signTime;

    /** 保证金 */
    @Excel(name = "保证金")
    private BigDecimal bondfee;

    /** 保证时长 单位月 */
    @Excel(name = "保证时长 单位月")
    private Integer bondmouth;

    /** 签约总面积 */
    @Excel(name = "签约总面积")
    private Long allarea;

    /** 合同状态0待签约1已签约待审核2已审核通过3已退租4已过期5已作废 */
    @Excel(name = "合同状态0待签约1已签约待审核2已审核通过3已退租4已过期5已作废")
    private Integer contarctStatus;

    /** 联系人电话 */
    @Excel(name = "联系人电话")
    private String contactEmail;

    /** 月租赁计算方式 1是按天2是按固定 */
    @Excel(name = "月租赁计算方式 1是按天2是按固定")
    private Integer rentMonthType;

    /** 租金总价 */
    @Excel(name = "租金总价")
    private BigDecimal rentfee;

    /** 1代表元平米天 2代表元平米月 */
    @Excel(name = "1代表元平米天 2代表元平米月")
    private Integer rentfeeUnit;

    /** 日租金额 */
    @Excel(name = "日租金额")
    private BigDecimal rentfeeDay;

    /** 月租金额 */
    @Excel(name = "月租金额")
    private BigDecimal rentfeeMonth;

    /** 管理费总价 */
    @Excel(name = "管理费总价")
    private BigDecimal propertyfee;

    /** 1代表元平米天 2代表元平米月 */
    @Excel(name = "1代表元平米天 2代表元平米月")
    private Integer propertyfeeUnit;

    /** 日管理额 */
    @Excel(name = "日管理额")
    private BigDecimal properDay;

    /** 月管理额 */
    @Excel(name = "月管理额")
    private BigDecimal properMonth;

    /** 租期时长 */
    @Excel(name = "租期时长")
    private Integer leaseTerm;

    /** 租期时长单位 */
    @Excel(name = "租期时长单位")
    private Integer leaseTermUtil;

    /** 合同总计 */
    @Excel(name = "合同总计")
    private BigDecimal contarctAmount;

    /** 1：天 2：月 3：季度 4：半年 5：年 */
    @Excel(name = "1：天 2：月 3：季度 4：半年 5：年")
    private Integer payRate;

    private List<HouseContarctBill> houseContarctBills;

    private List<HouseInfo> houseInfo;

    private CrmCustomer crmCustomer;

    private BigDecimal  sumFee;

    private BigDecimal sumYsFee;

    private String roomNames;


    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("contarctCode", getContarctCode())
            .append("rentCode", getRentCode())
            .append("propertyCode", getPropertyCode())
            .append("contarctName", getContarctName())
            .append("companyId", getCompanyId())
            .append("companyName", getCompanyName())
            .append("contactAddress", getContactAddress())
            .append("contactName", getContactName())
            .append("contactMobile", getContactMobile())
            .append("contractStartTime", getContractStartTime())
            .append("contractEndTime", getContractEndTime())
            .append("createTime", getCreateTime())
            .append("freeStarttime", getFreeStarttime())
            .append("freeEndTime", getFreeEndTime())
            .append("roomids", getRoomids())
            .append("status", getStatus())
            .append("contarctPath", getContarctPath())
            .append("updateTime", getUpdateTime())
            .append("signBy", getSignBy())
            .append("signTime", getSignTime())
            .append("createBy", getCreateBy())
            .append("updateBy", getUpdateBy())
            .append("bondfee", getBondfee())
            .append("bondmouth", getBondmouth())
            .append("allarea", getAllarea())
            .append("contarctStatus", getContarctStatus())
            .append("contactEmail", getContactEmail())
            .append("rentMonthType", getRentMonthType())
            .append("rentfee", getRentfee())
            .append("rentfeeUnit", getRentfeeUnit())
            .append("rentfeeDay", getRentfeeDay())
            .append("rentfeeMonth", getRentfeeMonth())
            .append("propertyfee", getPropertyfee())
            .append("propertyfeeUnit", getPropertyfeeUnit())
            .append("properDay", getProperDay())
            .append("properMonth", getProperMonth())
            .toString();
    }
}
